#pragma once
#include <windows.h>

//! The user will be able to open a file from a win32 dialog
//! 
//! \param[out] filePath The file path that the user chooses.
//! When NULL, the user has cancelled the dialog. The 
//! resulting buffer will be dynamically allocated, and needs
//! to be free()'d.
//! 
//! \param[in] extsCatagory The name of the catagory that 
//! incapsulates the file extensions. This is to make the dlg
//! look prettier. If NULL, this parameter is not used.
//! 
//! \param[in] exts A list of file extensions that are
//! acceptable. Example: { "jpg", "png", "bmp", NULL }. 
//! If NULL, there is no filter on the extensions available.
//! 
//! \param[in] wnd The handle to a window of the program. If
//! supplied, it will not create an additional taskbar task.
//! If NULL, this parameter is not used.
void OpenFileDlg(OUT TCHAR** filePath,
				 IN  const TCHAR* extsCatagory,
				 IN  const TCHAR** exts,
				 IN  HWND wnd);

//! The user will be able to save a file from a win32 dialog
//! 
//! \param[out] filePath The file path that the user chooses.
//! When NULL, the user has cancelled the dialog. The 
//! resulting buffer will be dynamically allocated, and needs
//! to be free()'d.
//! 
//! \param[in] extsCatagory The name of the catagory that 
//! incapsulates the file extensions. This is to make the dlg
//! look prettier. If NULL, this parameter is not used.
//! 
//! \param[in] exts A list of file extensions that are
//! acceptable. Example: { "jpg", "png", "bmp", NULL }.
//! If NULL, there is no filter on the extensions available.
//! 
//! \param[in] wnd The handle to a window of the program. If
//! supplied, it will not create an additional taskbar task.
//! If NULL, this parameter is not used.
void SaveFileDlg(OUT TCHAR** filePath,
				 IN  const TCHAR* extsCatagory,
				 IN  const TCHAR** exts,
				 IN  HWND wnd);